﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace FRMS.Model
{
    public class JLLssueinfo
    {
        public string Name { get; set; } = string.Empty;
        public string UUID { get; set; } = string.Empty;
        public string Session { get; set; } = string.Empty;
        public int TimeStamp { get; set; }
        public string Sign { get; set; } = string.Empty;
        public JLLssueinfoData Data { get; set; }
    }
    public class JLLssueinfoData
    {
        public string Action { get; set; } = string.Empty;
        public int AddType { get; set; }
        public int PersonType { get; set; }
        public JLLssueinfoPerson PersonInfo { get; set; }
    }

    public class JLLssueinfoPerson
    {
        public int PersonCover { get; set; }
        public string PersonId { get; set; } = string.Empty;
        public string PersonName { get; set; } = string.Empty;
        public int Sex { get; set; }
        public string IDCard { get; set; } = string.Empty;
        public string Nation { get; set; } = string.Empty;
        public string Birthday { get; set; } = string.Empty;
        public string Phone { get; set; } = string.Empty;
        public string Address { get; set; } = string.Empty;
        public int LimitTime { get; set; }
        public string StartTime { get; set; } = string.Empty;
        public string EndTime { get; set; } = string.Empty;
        public int PersonIdentity { get; set; }
        public string Label { get; set; } = string.Empty;
        public string ICCardNo { get; set; } = string.Empty;
        public List<string> ICCardNoList { get; set; }
        public JLPersonExtension PersonExtension { get; set; }
        public string PersonPhoto { get; set; } = string.Empty;
        public string FeatureValue { get; set; } = string.Empty;
        public string AuthData { get; set; } = string.Empty;
    }

    public class JLPersonExtension
    {
        public string PersonCode1 { get; set; } = string.Empty;
        public string PersonCode2 { get; set; } = string.Empty;
        public string PersonCode3 { get; set; } = string.Empty;
        public string PersonReserveName { get; set; } = string.Empty;
        public int PersonParam1 { get; set; }
        public int PersonParam2 { get; set; }
        public int PersonParam3 { get; set; }
        public int PersonParam4 { get; set; }
        public int PersonParam5 { get; set; }
        public string PersonData1 { get; set; } = string.Empty;
        public string PersonData2 { get; set; } = string.Empty;
        public string PersonData3 { get; set; } = string.Empty;
        public string PersonData4 { get; set; } = string.Empty;
        public string PersonData5 { get; set; } = string.Empty;
        public string AuthData { get; set; } = string.Empty;
    }

    public class JLLssueinfoReturn
    {
        public string Name { get; set; } = string.Empty;
        public string Session { get; set; } = string.Empty;
        public JLLssueinfoReturnData Data { get; set; }
        public int Code { get; set; }
        public string Message { get; set; }
    }

    public class JLLssueinfoReturnData
    {
        public string Action { get; set; } = string.Empty;
        public int PersonType { get; set; }
        public JLLssueinfoReturnPerson PersonInfo { get; set; }
        public int Result { get; set; }
    }
    public class JLLssueinfoReturnPerson
    {
        public string PersonId { get; set; } = string.Empty;
        public string PersonName { get; set; } = string.Empty;
        public int PersonIdentity { get; set; }
        public int IdentityAttribute { get; set; }
        public List<int> TimeTable { get; set; }
        public int Sex { get; set; }
        public string IDCard { get; set; }
        public string Nation { get; set; }
        public string Birthday { get; set; }
        public string Phone { get; set; }
        public string Address { get; set; }
        public string SaveTime { get; set; }
        public int LimitTime { get; set; }
        public string StartTime { get; set; }
        public string EndTime { get; set; }
        public string Label { get; set; }
        public string ICCardNo { get; set; }
        public List<string> ICCardNoList { get; set; }
        public JLPersonExtension PersonExtension { get; set; }
    }

    public class JLLssueinfoDel
    {
        public string Name { get; set; } = string.Empty;
        public string UUID { get; set; } = string.Empty;
        public string Session { get; set; } = string.Empty;
        public int TimeStamp { get; set; }
        public string Sign { get; set; } = string.Empty;
        public JLLssueinfoDelData Data { get; set; }
    }
    public class JLLssueinfoDelData
    {
        public string Action { get; set; }
        public int PersonType { get; set; }
        public string PersonId { get; set; }
    }

    public class JLLssueinfoDelAll
    {
        public string Name { get; set; } = string.Empty;
        public string UUID { get; set; } = string.Empty;
        public string Session { get; set; } = string.Empty;
        public int TimeStamp { get; set; }
        public string Sign { get; set; } = string.Empty;
        public JLLssueinfoDelAllData Data { get; set; }
    }
    public class JLLssueinfoDelAllData
    {
        public string Action { get; set; }
        public int PersonType { get; set; }
        public int PersonIdentity { get; set; }
    }

    public class JLLssueinfoDelBatch
    {
        public string Name { get; set; } = string.Empty;
        public string UUID { get; set; } = string.Empty;
        public string Session { get; set; } = string.Empty;
        public int TimeStamp { get; set; }
        public string Sign { get; set; } = string.Empty;
        public JLLssueinfoDelBatchData Data { get; set; }
    }

    public class JLLssueinfoDelBatchData
    {
        public string Action { get; set; }
        public int PersonType { get; set; }
        public List<JLLssueinfoDelBatchPerson> PersonList { get; set; }
    }
    public class JLLssueinfoDelBatchPerson
    {
        public string PersonId { get; set; }
    }

    public class TimeSynchronization
    {
        public string Name { get; set; } = string.Empty;
        public string UUID { get; set; } = string.Empty;
        public string Session { get; set; } = string.Empty;
        public int TimeStamp { get; set; }
        public string Sign { get; set; } = string.Empty;
        public TimeSynchronizationData Data { get; set; }
    }
    public class TimeSynchronizationData
    {
        public int TimeMode { get; set; }
        public string LocalTime { get; set; } = string.Empty;
    }
}
